/*
 * InGameNormalModeArcade.h
 *
 *  Created on: 2011-03-30
 *      Author: lpieczkowski
 */

#ifndef InGameNormalModeArcade_H_
#define InGameNormalModeArcade_H_

using namespace Osp::Base::Utility;

#define VERTICAL_PARTICLE_COUNT 40
#define HORIZONTAL_PARTICLE_COUNT 2
#define NUM_LIGHTNINGS_BOUNDARIES 4

#include <HitTheLines.h>
#include <Menu/Menu.h>
#include <Utils/Particle.h>
#include <Utils/Lightning.h>

class InGameNormalModeArcade :
	public HitTheLines
{
public:
	InGameNormalModeArcade();
	~InGameNormalModeArcade();
	void NavigateBack();

private:
	virtual void Initialize(void);
    void UpdateLogic(void);
    void Render(void);
    void PointerPressed(float x, float y);
    void CleanUp();
    std::string GetScreenName();
    void LoadTextures();
    void GenerateParticles(void);
    void DrawParticles(int i, int j, long long ticks);

    Osp::Graphics::Opengl::GLfloat transX;
    Osp::Graphics::Opengl::GLfloat transBoundariesX, oldTransBoundariesX;
    int direction;
    Osp::Graphics::Opengl::GLfloat LineSpeed;
    bool needsNextBoundaries;
    Osp::Graphics::Opengl::GLuint lineTexture, lineGradientTexture;

    Particle* particles[VERTICAL_PARTICLE_COUNT][HORIZONTAL_PARTICLE_COUNT];
    Lightning* lightnings;


    enum dirName{
    	DIR_INVALID,
    	DIR_LEFT,
    	DIR_RIGHT
    };
};

#endif /* InGameNormalModeArcade_H_ */
